package cn.com.fssg.platform.biz;

import cn.com.fssg.platform.modules.engine.dto.FileInfoDTO;
import cn.com.fssg.platform.modules.engine.entity.CfgDataFormFileInfo;
import cn.com.fssg.platform.modules.system.entity.SysDepart;
import cn.com.fssg.platform.modules.system.entity.SysRole;
import cn.com.fssg.platform.modules.system.entity.SysUser;
import cn.com.fssg.platform.modules.system.entity.vo.GdGovRequestVo;
import cn.com.fssg.platform.modules.system.model.SysLoginModel;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * @author : xzt
 * @description :
 * @createDate : 2025/6/4 9:22
 */
@Component
public class ExtendUtil {

    public static ExtendUtil cur() {
        return null;
    }

    /**
     * 登录
     * @param loginModel
     * @return
     */
    public Object login(SysLoginModel loginModel) throws Exception{
        return null;
    }

    /**
     * 登出
     * @param token
     * @return
     */
    public Object logout(String token) throws Exception {
        return null;
    }

    /**
     * 添加用户(如果新增的时候需要同时添加角色和部门)用这个
     * @param jsonObject
     * @return
     */
    public boolean addUser(JSONObject jsonObject) throws Exception {
        return true;
    }

    /**
     * 添加用户
     * @param user
     * @return
     */
    public boolean addUser(SysUser user) throws Exception{
        return true;
    }

    /**
     *校验用户账号是否唯一
     * @param loginname
     * @return
     * @throws Exception
     */
    public boolean checkOnlyUser(String loginname) throws Exception{
        return true;
    }

    /**
     * 用户角色关联
     * @param jsonObject
     * @return
     */
    public Object addSysUserRole(JSONObject jsonObject) throws Exception {
        return null;
    }

    public Object startProcess(String processDefinitionKey,String bizKey,String params, String formListStr,String processPageId) throws Exception {return null;}


    /**
     * 给指定用户添加角色
     * @param userId
     * @param roleIdList
     * @return
     */
    public boolean addSysUserRole(String userId, List<String> roleIdList) throws Exception{
        return true;
    }

    /**
     * 删除指定角色的用户关系
     * @param userId
     * @param roleId
     * @return
     */
    public boolean deleteUserRole(String userId,String roleId) throws Exception{
        return true;
    }

    /**
     * 查询用户角色
     * @param userId
     * @return
     */
    public List<SysRole> queryUserRole(String userId) throws Exception{
        return null;
    }

    /**
     * 校验验证码
     * @param captcha 验证码
     * @param checkKey 验证码key
     * @return
     * @throws Exception
     */
    public boolean checkCaptcha(String captcha,String checkKey) throws Exception {
        return true;
    }

    /**
     * 流程附件上传
     * @param files
     * @param fileTreeItemInsid
     * @param insbh
     * @param fileDirPath
     * @param timestamp
     * @param taskId
     * @throws Exception
     */
    public void workflowAttachmentUpload(List<File> files, String fileTreeItemInsid, String insbh, String fileDirPath, String timestamp, String taskId) throws Exception{
    }

    /**
     *获取自动编号
     * @param code
     * @return
     */
    public Object getAutoCodeNum(String code){return "";}


    /**
     * 生成密码
     * @param loginname
     * @param password
     * @return
     */
    public String generatePassword(String loginname,String password){
        return "";
    }

    /**
     * 作废流程
     * @param procInstId 流程实例id
     * @param isForce false
     *                1、判断当前流程任务数是否等于1，
     *                2、执行该操作的是否是任务待办处理人
     *                true  不判断
     */
    public void cancelProcInst(String procInstId, boolean isForce) {}

    /**
     * 新增或修改当前租户下的表单文件信息
     * @param formFileInfo
     */
    public boolean saveOrUpdateFormFileInfo(CfgDataFormFileInfo formFileInfo){
        return true;
    }


    /**
     * 修改密码
     * @param loginname 用户名
     * @param password 新密码 调用generatePassword方法生成，否则无法登录。
     * @return
     */
    public boolean changePassword(String loginname,String password){
        return true;
    }

    /**
     * 获取SM2公钥
     * @return
     */
    public Map<String, String> getSm2PublicKey() {
        return new HashMap<>();
    }

    /**
     * 和公钥一起返回的key
     * @param key
     * @return
     */
    public  String getSm2PrivateKey(String key) {
        return "";
    }

    /**
     * 根据私钥解密
     * @param plaintext
     * @param password
     * @param priKey
     * @return
     */
    public String getSM2Decrypt(String plaintext,String password,String priKey){
        return "";
    }

    /**
     * 修改用户信息  包括密码 密码记得先加密。不修改的属性不传值即可
     * @param sysUser
     * @return
     */
    public boolean updateUserInfo(SysUser sysUser){
        return true;
    }

    /**
     * 修改部门信息
     * @param sysDepart
     * @return
     */
    public boolean updateDepartInfo(SysDepart sysDepart){
        return true;
    }

    /**
     * 修改用户部门关系
     * @param userId
     * @param departIds
     * @return
     */
    public boolean updateUserDepart(String userId,String departIds){
        return true;
    }

    /**
     * 打印模板
     * @param templateId 模板id
     * @param allParams 参数
     */
    /**
     * 打印模板
     * @param templateId 模板id
     * @param allParams 参数
     */
    public byte[] export(String templateId, Map<String, Object> allParams){
        return null;
    }

    /**
     * 添加部门
     * @param sysDepart
     * @return
     */
    public boolean addDepart(SysDepart sysDepart){
        return true;
    }

    /**
     * 上传文件 并保存信息到表单文件信息表
     * @param file
     * @param formCode 表单code
     * @param keyValue 表单字段值
     * @param formField 表单字段
     * @param parentId 没有直接传 -1
     * @param distBucket 控制是否上传到公共桶的，传0否，1是
     * @return
     */
    public FileInfoDTO upload(File file, String formCode, String keyValue, String formField, String parentId, String distBucket) {
        return null;
    }

    /**
     * 删除用户 逻辑删除
     * @param id 用户id
     * @return
     */
    public boolean deleteUser(String id){
        return true;
    }

    /**
     * 根据数据库配置表配置发送短信
     * @param appId 应用id
     * @param phone 手机号
     * @param content 发送内容
     * @param minSendInterval 发送间隔时间，默认60秒
     * @throws IOException
     */
    public void sendSms(String appId, String phone, String content,Integer minSendInterval) throws IOException {

    }

    /**
     * 格式化错误消息
     * @param msg
     * @param e
     * @return
     */
    public static String formatMessage(String msg , Exception e){
        return null;
    }

    /**
     * 删除表单附件，并记录到历史表
     * @param fileId
     */
    public void deleteFileAndRecordHistory(String fileId) {

    }

    /**
     * 广东省数据资源“一网共享”平台服务接口请求
     *
     * @param requestVo 接口内容对象
     * @return 请求返回结果
     * @throws Exception 异常信息
     */
    public String sendGdGov(GdGovRequestVo requestVo) throws Exception {
        return null;
    }

}

